今天要進入到onDraw的部分,通過使用onDraw可以讓我們的圖像是可變動的,像是可以畫出一條波形圖再依據其他元件來影響圖像的顯示,或是一般的圖形也可以使用onDraw來達成,下面會先說明onDraw的基本使用過程。
開始使用onDraw首先開一個新的class並繼承View。
public class MyView extends View {
public MyView(Context context) {
super(context);
}
}
接下來先來畫出幾個基本的圖形,在這之前要先新增畫筆,通過畫筆可以決定繪出的圖形顏色、粗細等等。
public class MyView extends View {
private Paint paint;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
}
}
完成後按下ctrl+o鍵來叫出onDraw後便可以開始來畫一些東西出來。
public class MyView extends View {
private Paint paint;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//直線
canvas.drawLine(50, 50, 150, 50, paint);
}
}
//矩形
canvas.drawRect(0,0,200,200,paint);
//圓形
canvas.drawCircle(200,200,100,paint);
最後還有波型的部分,需要使用Path來完成。
public class MyView extends View {
private Paint paint;
private Path path;
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
path = new Path();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
path.moveTo(100, 100);
path.quadTo(300, 300, 500, 100);
canvas.drawPath(path, paint);
}
}